home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / hplip / toolbox.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-10-28  |  6KB  |  243 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __version__ = '15.0'
  5. __mod__ = 'hp-toolbox'
  6. __title__ = 'HP Device Manager'
  7. __doc__ = 'The HP Device Manager (aka "Toolbox") for HPLIP supported devices. Provides access to status, tools, and supplies levels.'
  8. import sys
  9. import os
  10. import getopt
  11. import signal
  12. from base.g import *
  13. import base.utils as utils
  14. from base import status, tui, module
  15. w = None
  16. app = None
  17. toolbox = None
  18. session_bus = None
  19.  
  20. def handle_session_signal(*args, **kwds):
  21.     if kwds['interface'] == 'com.hplip.Toolbox' and kwds['member'] == 'Event':
  22.         event = device.Event(*args)
  23.         event.debug()
  24.         if event.event_code > EVENT_MAX_EVENT:
  25.             event.event_code = status.MapPJLErrorCode(event.event_code)
  26.         
  27.         log.debug('Received event notifier: %d' % event.event_code)
  28.         if not event.send_via_pipe(w, 'toolbox ui'):
  29.             sys.exit(1)
  30.         
  31.     
  32.  
  33. mod = module.Module(__mod__, __title__, __version__, __doc__, None, (GUI_MODE,), (UI_TOOLKIT_QT3, UI_TOOLKIT_QT4))
  34. mod.lockInstance()
  35. mod.setUsage(module.USAGE_FLAG_NONE, extra_options = [
  36.     ('Disable dbus (Qt3 only):', '-x or --disable-dbus', 'option', False)], see_also_list = [
  37.     'hp-align',
  38.     'hp-clean',
  39.     'hp-colorcal',
  40.     'hp-devicesettings',
  41.     'hp-hp-faxsetup',
  42.     'hp-firmware',
  43.     'hp-info',
  44.     'hp-levels',
  45.     'hp-linefeedcal',
  46.     'hp-makecopies',
  47.     'hp-plugin',
  48.     'hp-pqdiag',
  49.     'hp-print',
  50.     'hp-printsettings',
  51.     'hp-scan',
  52.     'hp-sendfax',
  53.     'hp-testpage',
  54.     'hp-timedate',
  55.     'hp-unload'])
  56. (opts, device_uri, printer_name, mode, ui_toolkit, loc) = mod.parseStdOpts('x', [
  57.     'disable-dbus'])
  58. disable_dbus = False
  59. for o, a in opts:
  60.     if o in ('-x', '--disable-dbus') and ui_toolkit == 'qt3':
  61.         disable_dbus = True
  62.         continue
  63.  
  64. if ui_toolkit == 'qt3':
  65.     if not utils.canEnterGUIMode():
  66.         log.error('%s requires GUI support. Exiting.' % __mod__)
  67.         sys.exit(1)
  68.     
  69. elif ui_toolkit == 'qt4':
  70.     if not utils.canEnterGUIMode4():
  71.         log.error('%s requires GUI support. Exiting.' % __mod__)
  72.         sys.exit(1)
  73.     
  74.  
  75. (child_pid, w, r) = (0, 0, 0)
  76. if ui_toolkit == 'qt3':
  77.     
  78.     try:
  79.         from dbus import SessionBus
  80.         import dbus.service as dbus
  81.         from dbus.mainloop.glib import DBusGMainLoop
  82.         from gobject import MainLoop
  83.     except ImportError:
  84.         log.error('Unable to load dbus - Automatic status updates in HPLIP Device Manager will be disabled.')
  85.         disable_dbus = True
  86.  
  87.     if not disable_dbus:
  88.         (r, w) = os.pipe()
  89.         parent_pid = os.getpid()
  90.         log.debug('Parent PID=%d' % parent_pid)
  91.         child_pid = os.fork()
  92.     
  93.     if disable_dbus or child_pid:
  94.         log.set_module('hp-toolbox(UI)')
  95.         if w:
  96.             os.close(w)
  97.         
  98.         
  99.         try:
  100.             from qt import *
  101.             from ui.devmgr4 import DevMgr4
  102.         except ImportError:
  103.             log.error('Unable to load Qt3 support. Is it installed?')
  104.             sys.exit(1)
  105.  
  106.         app = QApplication(sys.argv)
  107.         if loc is None:
  108.             loc = user_conf.get('ui', 'loc', 'system')
  109.             if loc.lower() == 'system':
  110.                 loc = str(QTextCodec.locale())
  111.                 log.debug('Using system locale: %s' % loc)
  112.             
  113.         
  114.         if loc.lower() != 'c':
  115.             e = 'utf8'
  116.             
  117.             try:
  118.                 (l, x) = loc.split('.')
  119.                 loc = '.'.join([
  120.                     l,
  121.                     e])
  122.             except ValueError:
  123.                 l = loc
  124.                 loc = '.'.join([
  125.                     loc,
  126.                     e])
  127.  
  128.             log.debug('Trying to load .qm file for %s locale.' % loc)
  129.             trans = QTranslator(None)
  130.             qm_file = 'hplip_%s.qm' % l
  131.             log.debug('Name of .qm file: %s' % qm_file)
  132.             loaded = trans.load(qm_file, prop.localization_dir)
  133.             if loaded:
  134.                 app.installTranslator(trans)
  135.             else:
  136.                 loc = 'c'
  137.         
  138.         if loc == 'c':
  139.             log.debug("Using default 'C' locale")
  140.         else:
  141.             log.debug('Using locale: %s' % loc)
  142.             QLocale.setDefault(QLocale(loc))
  143.             prop.locale = loc
  144.             
  145.             try:
  146.                 locale.setlocale(locale.LC_ALL, locale.normalize(loc))
  147.             except locale.Error:
  148.                 pass
  149.  
  150.         toolbox = DevMgr4(r, __version__, device_uri, disable_dbus)
  151.         app.setMainWidget(toolbox)
  152.         toolbox.show()
  153.         
  154.         try:
  155.             log.debug('Starting GUI loop...')
  156.             app.exec_loop()
  157.         except KeyboardInterrupt:
  158.             sys.exit(0)
  159.         finally:
  160.             if child_pid:
  161.                 log.debug('Killing child toolbox process (pid=%d)...' % child_pid)
  162.                 
  163.                 try:
  164.                     os.kill(child_pid, signal.SIGKILL)
  165.                 except OSError:
  166.                     e = None
  167.                     log.debug('Failed: %s' % e.message)
  168.                 except:
  169.                     None<EXCEPTION MATCH>OSError
  170.                 
  171.  
  172.             mod.unlockInstance()
  173.             sys.exit(0)
  174.  
  175.     elif not disable_dbus:
  176.         log.set_module('hp-toolbox(dbus)')
  177.         from base import device
  178.         
  179.         try:
  180.             os.close(r)
  181.             dbus_loop = DBusGMainLoop(set_as_default = True)
  182.             
  183.             try:
  184.                 session_bus = dbus.SessionBus()
  185.             except dbus.exceptions.DBusException:
  186.                 e = None
  187.                 if os.getuid() != 0:
  188.                     log.error('Unable to connect to dbus session bus. Exiting.')
  189.                     sys.exit(1)
  190.                 else:
  191.                     log.error('Unable to connect to dbus session bus (running as root?)')
  192.                     sys.exit(1)
  193.             except:
  194.                 os.getuid() != 0
  195.  
  196.             session_bus.add_signal_receiver(handle_session_signal, sender_keyword = 'sender', destination_keyword = 'dest', interface_keyword = 'interface', member_keyword = 'member', path_keyword = 'path')
  197.             log.debug('Entering main loop...')
  198.             
  199.             try:
  200.                 MainLoop().run()
  201.             except KeyboardInterrupt:
  202.                 log.debug('Ctrl-C: Exiting...')
  203.  
  204.         finally:
  205.             if parent_pid:
  206.                 log.debug('Killing parent toolbox process (pid=%d)...' % parent_pid)
  207.                 
  208.                 try:
  209.                     os.kill(parent_pid, signal.SIGKILL)
  210.                 except OSError:
  211.                     e = None
  212.                     log.debug('Failed: %s' % e.message)
  213.                 except:
  214.                     None<EXCEPTION MATCH>OSError
  215.                 
  216.  
  217.             mod.unlockInstance()
  218.  
  219.         sys.exit(0)
  220.     
  221. else:
  222.     
  223.     try:
  224.         from PyQt4.QtGui import QApplication
  225.     except ImportError:
  226.         log.error('Unable to load Qt4 support. Is it installed?')
  227.         sys.exit(1)
  228.  
  229.     from ui4.devmgr5 import DevMgr5
  230.     log.set_module('hp-toolbox(UI)')
  231.     app = QApplication(sys.argv)
  232.     toolbox = DevMgr5(__version__, device_uri, None)
  233.     toolbox.show()
  234.     
  235.     try:
  236.         log.debug('Starting GUI loop...')
  237.         app.exec_()
  238.     except KeyboardInterrupt:
  239.         sys.exit(0)
  240.  
  241.     mod.unlockInstance()
  242.     sys.exit(0)
  243.